package com.xinchuang.service.targetSystem;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xinchuang.common.Result;
import com.xinchuang.entity.targetSystem.object.SystemsAdd;
import com.xinchuang.entity.targetSystem.system.*;

import java.util.List;
import java.util.Map;

/**
 * @ClassName
 * @Description:
 * @auther xukl
 * @data 2021/3/30  16:40
 * @Version V1.0
 */
public interface SystemsService {

    Result<Map<String, Object>> saveRelationship(String sysId, List<SystemsRelationship> list);

    Result initAddSystem(String status);

    Result selectTypePullDown(List<String> typeId);

    Result selectSystemWaitTarget(String sysId, String keyword);

    Result addChoiceTarget(String sysId, int type, List<String> targetArray, List<String> systemArray);

    Result selectSystemConfirmTarget(Integer pageNum, Integer pageSize, String sysId, String keyword);

    /**
     * 查询体系系统信息
     */
    Result selectSystemOnly(String sysId, String redId, String systemsName, String systemsType, String remark, String country, String keyword, String taskId, String systemType, boolean juage, String url, String countrys, String typeId);

    Result addSystem(String sysId, String redId, String sysName, String typeId, String remark, String userId, String url, String country, String systemsType);

    Result deleteSystem(List<String> sysIds);

    Result selectSystemList(Integer pageNum, Integer pageSize, String keyword);

    Result uploadTargetIcon(String id, String icon);

    Result uploadSystemIcon(String id, String icon);

    Result uploadRapexIcon(String id, String icon);

    /**
     * 新增体系关系（单条）
     *
     * @param systemsRelationship
     * @return
     */
    Result<Map<String, Object>> addRelationship(JSONObject systemsRelationship);

    /**
     * 删除单条体系关系
     *
     * @param sysShipId
     * @return
     */
    Result<Map<String, Object>> deleteRelationship(String sysShipId);

    /**
     * 查询体系详细信息
     *
     * @param sysId
     * @return
     */
    Result selectSystemDetail(String sysId, String targetId);

    /**
     * 查询单个体系指标下拉列表
     */
    Result selectIndexPull(String sysId);

    /**
     * 查询系统待选详细信息列表
     */
    Result selectSystemWaitList(int pageNum, int pageSize, String sId, String index);

    /**
     * 添加指标
     */
    Result insertConfirmIndex(List<SystemsRelation> relationList, String sysId, String status);

    /**
     * 查询系统已选详细信息列表
     */
    Result selectSystemConfirmList(int pageNum, int pageSize, String sysId, String index);

    /**
     * 查询系统指标列表
     */
    Result selectSystemIndexList(String sysId);

    /**
     * 查询体系对比指标列表
     */
    Result selectSystemsIndexComparisonList(String sysId);

    /**
     * 查询目标类型选择
     */
    Result selectTypeList(String country, String sysId);

    /**
     * 查询系统列表选择
     */
    Result selectSystemList(String sysId, List<String> typeList, String country);

    /**
     * 查询体系专有属性
     */
    Result selectSystemsElseData(String sysId);

    /**
     * 新增/更新体系专有属性
     */
    Result addSystemsElseData(String sysId, List<SystemsElseData> list);

    //武汉专有接口数据

    Result selectSystemConfirmTargetWuHan(Integer pageNum, Integer pageSize, String sysId, String targetId, String keyword);

    Result addSystemWuHan(SystemsAdd systemsAdd, String taskId);

    Result selectSystemListWuHan(Integer pageNum, Integer pageSize, String taskId, List<String> includeType, String keyword);

    /**
     * 生成报告
     *
     * @param sysId
     * @return
     */
    Result createDoc(String sysId, String damage);

    /**
     * 下载报告
     *
     * @param sysId
     * @return
     */
    Result downDoc(String sysId);

    /**
     * 查询体系关联目标下拉列表
     *
     * @param sysId
     * @return
     */
    Result selectTargetPull(String sysId, String targetId);

    /**
     * 判断体系
     *
     * @param systemName
     * @return
     */
    boolean judgeSystemsName(String sysId, String systemName);

    /**
     * 获取体系目标下拉列表
     * @param sysId
     * @return
     */
    Result selectSystemsTargetPull(String sysId);

    /**
     * 保存打击评估
     * @param json
     * @return
     */
    Result addBlows(JSONObject json);

    /**
     * 查询体系树
     * @param keyword
     * @param systemsType
     * @param country
     * @return
     */
    Result selectSystemsTree(String keyword, JSONArray systemsType, JSONArray country);

    /**
     * 保存体系场景
     * @param json
     * @return
     */
    Result addSystemsScene(JSONObject json);

    /**
     * 保存体系场景
     * @param json
     * @return
     */
    Result getSystemsScene(JSONObject json);


}






